#ifndef MCU_HW_H
#define MCU_HW_H

#include "Mcu_Types.h"
#include "Reg_Macros.h"
#include "Platform_Lib.h"
#include "Mcu_addr.h"
#include "Mcu_mask.h"

/*******************************************************************
| defines and macros (scope: module-local)
|------------------------------------------------------------------*/

#define Mcu_Hw_GetResetRawValue() 	 (Mcu_RawResetType) (REG_READ32(SCU_RSTSTAT_ADDR))

/*******************************************************************
| function prototypes (scope: module-local)
|------------------------------------------------------------------*/

	void Mcu_Hw_Init( void );

	void Mcu_Hw_TrapInit ( void );

	void Mcu_Hw_IntInit (void);

    Std_ReturnType Mcu_Hw_InitClock( Mcu_ClockConfigTypeRef McuClockConfig );

    void Mcu_Hw_DistributePllClock( void );
    
	Mcu_PllStatusType Mcu_Hw_GetPllStatus( void );

    Mcu_ResetType  Mcu_Hw_GetResetReason( void );

	#if (MCU_PERFORM_RESET_API == STD_ON)
	void Mcu_Hw_PerformReset( void );
	#endif

	void Mcu_Hw_SetMode( Mcu_ModeType McuMode );

	
#endif /*#ifndef MCU_HW_H*/
